MySQL触发器 (通过Navicat 编辑) |
您所在的位置:网站首页 › navicat 编辑数据 › MySQL触发器 (通过Navicat 编辑) |
文章目录
1、触发器的概念2、触发器的作用3、MySQL 语法4、简单的示例5、效果
1、触发器的概念
触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行 2、触发器的作用 可在写入数据表前,强制检验或转换数据。触发器发生错误时,异动的结果会被撤销。部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。可依照特定的情况,替换异动的指令 (INSTEAD OF)。 3、MySQL 语法DELIMITER | CREATE TRIGGER . < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] > ON [dbo] //dbo代表该表的所有者 FOR EACH ROW BEGIN –do something END | 4、简单的示例现在我用两个表 一个是 A表 一个是B表 我想在A表更新数据的时候 给B表添加一条 记录 (类似于日常使用的Log)应用场景如:记录用户的余额变动 记录登陆日志 等 我这里先简单的实现一下 A表结构 CREATE TABLE `a` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `text` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;B表结构 CREATE TABLE `b` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0), PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;比如说 我在A表 修改的时候 在B中存储一条 记录修改 之前的数据 在A表中添加触发器 触发器部分 应该很好理解 名:就是定义个名字 触发:有两个参数 BEFORE就是在 之前操作执行 AFTER 就是在操作之后执行 插入:当A表 执行插入新数据的时候 执行 更新:当A表 执行更新数据的时候 执行 删除:当A表 执行删除数据的时候 执行 重要 定义:这里要写 你要执行的 SQL语句 语法参看一下 3、MySQL 语法 要注意 代码中的 old 代表 修改之前的数据 如果想用处理之后的 数据 就用 new 就可以 这里就简单的写了一个 添加log的 小demo吧 如果想做其他的操作 就在这里处理就可以 自己写一下 SQL语句 5、效果A表数据 注意:我在使用时候初次添加保存的时候 mysql报错 权限不足 我给了最高权限就可以保存了 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |